/**
 * 文件名：@AbstractUserArgumentResolver.java <br/>
 * 包名：cn.efunbox.afw.web.mvc.springmvc <br/>
 * 项目名：afw-web <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.web.mvc.springmvc;

import javax.servlet.http.HttpServletRequest;

import org.springframework.core.MethodParameter;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;

import cn.efunbox.afw.web.UserResolver;

/**
 * 类名：AbstractUserArgumentResolver  <br />
 *
 * 功能：用户参数解析器
 *
 * @author xtwin <br />
 * 创建时间：2016年7月28日 下午5:29:02  <br />
 * @version 2016年7月28日
 */
public abstract class AbstractUserArgumentResolver implements HandlerMethodArgumentResolver {
	
	// 用户解析器
	protected UserResolver<?> userResolver;

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2016年7月28日 下午5:29:19<br/>
	 * 
	 * @param parameter
	 * @param mavContainer
	 * @param webRequest
	 * @param binderFactory
	 * @return
	 * @throws Exception <br/>
	 * @see org.springframework.web.method.support.HandlerMethodArgumentResolver#resolveArgument(org.springframework.core.MethodParameter, org.springframework.web.method.support.ModelAndViewContainer, org.springframework.web.context.request.NativeWebRequest, org.springframework.web.bind.support.WebDataBinderFactory)
	 */
	@Override
	public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
		return userResolver.resolve((HttpServletRequest) webRequest.getNativeRequest());
	}

	/**
	 * @version 2016年7月28日-下午5:30:39
	 */
	public void setUserResolver(UserResolver<?> userResolver) {
		this.userResolver = userResolver;
	}
}
